Properly set memory parameters for newly created domains.
Signed-off-by: Bin Ren <bin.ren@cl.cam.ac.uk>
goto fail;
if ( (err = do_dom_mem_op(xc_handle, MEMOP_increase_reservation,
- NULL, mem_kb/4, 0, *pdomid)) != (mem_kb/4) )
+ NULL, mem_kb/4 + 1, 0, *pdomid)) != (mem_kb/4) )
{
if ( err > 0 )
errno = ENOMEM;
d = find_domain_by_id(op->u.setdomainmaxmem.domain);
if ( d != NULL )
{
- d->max_pages = op->u.setdomainmaxmem.max_memkb >> (PAGE_SHIFT-10);
+ d->max_pages = (op->u.setdomainmaxmem.max_memkb +
+ ((PAGE_SIZE-1)>>10)) >> (PAGE_SHIFT-10);
put_domain(d);
ret = 0;
}
return i;
}
+ /* Initialise the machine-to-phys mapping for this page. */
+ set_machinetophys(page_to_pfn(page), d->tot_pages - 1);
+
/* Inform the domain of the new page's machine address. */
if ( (extent_list != NULL) &&
(__put_user(page_to_pfn(page), &extent_list[i]) != 0) )